Block data storage devices store and/or retrieve digital data in the form of blocks, which are individually addressable by a host device. Exemplary block data storage devices include hard disc drives, optical disc recorders and players, and magnetic digital tape recorders and players.
Such devices typically include a hardware/firmware based interface circuit having a buffer (first memory location), a communication channel and a recordable medium (second memory location). The user memory space of the second memory location is divided into a number of addressable blocks, which are assigned host-level addresses (sometimes referred to as logical block addresses or LBAs). Each LBA typically has a corresponding physical block address (PBA) used by servo control circuitry to align a data transducing head with the appropriate portion of a storage medium to access the desired LBA.
To write data to the medium, the host device issues a write command comprising the user data to be stored by the storage device along with a list of LBAs to which the user data are to be stored. The storage device temporarily stores the user data in the first memory location, schedules movement of the data transducing head to the appropriate location(s) over the medium, and then uses write channel portions of the communication channel to apply the appropriate encoding and conditioning of the data to write the data to the selected LBAs.
To subsequently read the data from the storage device, the host device issues a read command identifying the LBAs from which data are to be retrieved. The storage device schedules movement of the data transducing head to the appropriate location(s) over the medium, and then uses read channel portions of the communication channel to decode readback data which are placed into the first memory location (buffer) for subsequent transfer back to the host device.
In practice, as files are created, extended and deleted, the available disc media becomes fragmented. Nearly every computer disc oriented file system suffers from file data fragmentation. File systems attempt to minimize the seek time between associated file fragments by keeping fragments logically close together on the disc. Since the file system does not know the exact underlying physical disc organization and architecture, it is designed to assume that logical blocks that have addresses close to one another will also be physically close together on the media.
Each file fragment read from media requires a separate media access command both on the host and within the disc drive. Since the internal disc drive command processing overhead value is unknown to the file system, the system may unwittingly select blocks on the media for file fragments which result in the worst possible performance instead of the best performance. This can happen when each fragment, although nearly sequential on disc, incurs in an extra disc revolution for each read/write operation due to command overhead processing time, spoiling the access such that the head just misses the requested block and must wait for an entire revolution of the disc in order to try again.
Object-based storage device (OSD) technology is being developed at the disc drive level. OSD access by a host differs from standard block oriented protocols in a profound way. Data are addressed as objects, and the smallest addressable unit in an OSD disc drive is a byte. Additionally, a significant portion of the file system is abstracted within the disc drive. The physical location and organization of data is hidden from the host and is managed by the disc drive unit.
Object-based storage is an extension of the small computer system interface (SCSI) command set. The object-based storage command set shifts or delegates certain functionality and intelligence from the host to the individual storage devices. It does this by managing and storing a file and its metadata together as one coherent object, maintaining the connection down to the object-based storage devices (for example, a controller, a disc array, or an individual disc drive).
Higher level infrastructure activities are delegated to the lowest-level devices, decreasing traffic and enabling new functionality that software alone cannot provide. This enables greater scalability and performance, dynamic reconfiguration, host interoperability, native security, and enhanced reliability.
An object-based storage device can be a network-attached storage device that presents an interface of arbitrarily-named data objects of variable size rather than sequentially numbered fixed-size blocks, to deal with the data storage details, such as request scheduling and data layout. Metadata can be managed separately by one or more specialized metadata servers. The separation of data and metadata storage and management provides very high access bandwidth to the large-scale distributed storage systems.
OSD architecture treats storage neither as blocks nor files, but as objects. The primary distinction between a file and an object is that an object maintains a coupling between object data and primary metadata. Primary metadata includes access time, permissions, logical object size, etc. For example, an object could be a single database record, or table, or the entire database itself. An object may contain a file, or just a portion of a file. The storage device is aware of this content and can handle the lower-level details of device management, like block allocation.
Typical disc drive interface protocols (such as SCSI, FC, ATA, etc.) access disc data as logical blocks, with all file system organization being abstracted within the host. The smallest addressable unit in a disc drive is a block. In contrast, the smallest addressable unit in an OSD disc drive is a byte. Additionally, the significant portion of the file system is abstracted within the disc drive. Data are addressed as objects. The physical location and organization of data is hidden from the host and is managed by the disc drive unit.
It would be desirable to utilize the characteristics of an object oriented file system to minimize seek overhead during file access.